﻿package me.zhengjie.common.annotation




/**
 * @author Kuki
 * @Date 2024/11/26
 */
@Target(AnnotationTarget.FIELD)
@Retention(AnnotationRetention.RUNTIME)

annotation class Query( // Dong ZhaoYang 2017/8/7 基本对象的属性名
    val propName: String = "",  // Dong ZhaoYang 2017/8/7 查询方式
    val type: Query.Type = Query.Type.EQUAL,
    /**
     * 连接查询的属性名，如User类中的dept
     */
    val joinName: String = "",
    /**
     * 默认左连接
     */
    val join: Query.Join = Query.Join.LEFT,
    /**
     * 多字段模糊搜索，仅支持String类型字段，多个用逗号隔开, 如@Query(blurry = "email,username")
     */
    val blurry: String = ""
) {
    enum class Type {
        // jie 2019/6/4 相等
        EQUAL, GREATER_THAN, LESS_THAN, INNER_LIKE, LEFT_LIKE, RIGHT_LIKE, LESS_THAN_NQ, IN, NOT_IN, NOT_EQUAL, BETWEEN, NOT_NULL, IS_NULL, FIELD_IN_SET
    }

    /**
     * @author Kuki Wu 2024/11/25
     * 适用于简单连接查询，复杂的请自定义该注解，或者使用sql查询
     */
    enum class Join {
        /** jie 2019-6-4 13:18:30 左连接  */
        LEFT, RIGHT, INNER
    }
}